Notes and format last updated Apr 9, 2020
This page shows COVID data broken down into regions that affect our family. It pulls from publicly available raw data from the NY Times, which is reported daily. It’s on a one-day lag, so when you see this report, the most recent day included will be the day prior.
Finally, the last section compares data from states that have and have not enacted state-wide stay-at-home orders, trying to see if there are any effects of the orders. It’s a work in progress, and there are more extensive notes in that section.
agg.cases.US <- state.raw[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.US
agg.cases.US[, total_cases_prev3 := temp$total_cases[match(agg.cases.US$date - 3, temp$date)]]
agg.cases.US[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.US[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.US
agg.cases.US[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.US$date - 1, temp$date)]]
agg.cases.US[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.US[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.US.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = "United States",
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.US.plot
use.state <- "Washington"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev3 := temp$total_cases[match(agg.cases.state$date - 3, temp$date)]]
agg.cases.state[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.state[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.state
agg.cases.state[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.state[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.state.plot
use.state <- "California"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev3 := temp$total_cases[match(agg.cases.state$date - 3, temp$date)]]
agg.cases.state[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.state[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.state
agg.cases.state[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.state[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.state.plot
use.state <- "South Carolina"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev3 := temp$total_cases[match(agg.cases.state$date - 3, temp$date)]]
agg.cases.state[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.state[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.state
agg.cases.state[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.state[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.state.plot
use.state <- "Tennessee"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev3 := temp$total_cases[match(agg.cases.state$date - 3, temp$date)]]
agg.cases.state[, total_cases_rtgrowth := total_cases/total_cases_prev3 - 1]
agg.cases.state[, new_cases_prev3 := total_cases - total_cases_prev3]
temp <- agg.cases.state
agg.cases.state[, new_cases_prev3_last := temp$new_cases_prev3[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, new_cases_rtgrowth := new_cases_prev3/new_cases_prev3_last - 1]
melt.use <- melt(agg.cases.state[, c("date", "total_cases_rtgrowth", "new_cases_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_cases_rtgrowth", "Total Cases", "New Cases")]
agg.cases.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID cases",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.cases.growth.state.plot
agg.deaths.US <- state.raw[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.US
agg.deaths.US[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.US$date - 3, temp$date)]]
agg.deaths.US[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.US[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.US
agg.deaths.US[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.US$date - 1, temp$date)]]
agg.deaths.US[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.US[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.US.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = "United States",
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.US.plot
use.state <- "Washington"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.state$date - 3, temp$date)]]
agg.deaths.state[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.state[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.state
agg.deaths.state[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.state[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.state.plot
use.state <- "California"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.state$date - 3, temp$date)]]
agg.deaths.state[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.state[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.state
agg.deaths.state[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.state[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.state.plot
use.state <- "South Carolina"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.state$date - 3, temp$date)]]
agg.deaths.state[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.state[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.state
agg.deaths.state[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.state[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.state.plot
use.state <- "Tennessee"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev3 := temp$total_deaths[match(agg.deaths.state$date - 3, temp$date)]]
agg.deaths.state[, total_deaths_rtgrowth := total_deaths/total_deaths_prev3 - 1]
agg.deaths.state[, new_deaths_prev3 := total_deaths - total_deaths_prev3]
temp <- agg.deaths.state
agg.deaths.state[, new_deaths_prev3_last := temp$new_deaths_prev3[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, new_deaths_rtgrowth := new_deaths_prev3/new_deaths_prev3_last - 1]
melt.use <- melt(agg.deaths.state[, c("date", "total_deaths_rtgrowth", "new_deaths_rtgrowth")], id.vars = "date")
melt.use[, variable := ifelse(variable %in% "total_deaths_rtgrowth", "Total Deaths", "New Deaths")]
agg.deaths.growth.state.plot <- ggplot(melt.use[date >= "2020-03-16"], aes(x = date, y = value, color = variable)) +
geom_line(aes(group = variable)) +
labs(x = "Date",
y = "Rate of growth (rolling 3-day window)",
title = "Rolling 3-day rate of growth: Confirmed COVID deaths",
subtitle = use.state,
color = "Metric") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1), limits =
c(ifelse(min(melt.use$value) > 0, 0, min(melt.use$value)), max(melt.use$value * 1.1)))
agg.deaths.growth.state.plot
Table of total confirmed cases per million residents (all 50 states)
state.per.cap <- merge(state.raw, stay_dates, by = "state", all.x = T)
state.per.cap[, casesPerMillion := as.integer(cases/population * 1000000)]
date.cut <- max(state.per.cap$date)
state.per.cap.agg <- state.per.cap[date == date.cut]
state.per.cap.agg <- state.per.cap.agg[order(-casesPerMillion), c("state", "casesPerMillion")]
state.per.cap.agg[, casesPerMillion := comma(casesPerMillion)]
state.per.cap.agg
## state casesPerMillion
## 1: New York 9,699
## 2: New Jersey 6,963
## 3: Louisiana 4,430
## 4: Massachusetts 3,696
## 5: Connecticut 3,375
## 6: District of Columbia 2,656
## 7: Rhode Island 2,515
## 8: Michigan 2,452
## 9: Pennsylvania 1,793
## 10: Delaware 1,668
## 11: Illinois 1,645
## 12: Washington 1,367
## 13: Maryland 1,360
## 14: Colorado 1,268
## 15: Indiana 1,177
## 16: Vermont 1,165
## 17: Georgia 1,139
## 18: Mississippi 934
## 19: Nevada 928
## 20: Florida 925
## 21: South Dakota 825
## 22: Idaho 797
## 23: Tennessee 753
## 24: Alabama 730
## 25: New Hampshire 724
## 26: Utah 718
## 27: Missouri 677
## 28: South Carolina 644
## 29: Virginia 617
## 30: New Mexico 593
## 31: California 590
## 32: Wisconsin 573
## 33: Ohio 564
## 34: Iowa 502
## 35: Oklahoma 497
## 36: Arizona 486
## 37: Texas 475
## 38: Maine 470
## 39: Wyoming 466
## 40: Kansas 459
## 41: Kentucky 439
## 42: North Carolina 430
## 43: Arkansas 424
## 44: Nebraska 423
## 45: North Dakota 404
## 46: Alaska 369
## 47: Montana 362
## 48: Oregon 362
## 49: Hawaii 351
## 50: West Virginia 343
## 51: Minnesota 287
## 52: Puerto Rico 280
## 53: American Samoa <NA>
## 54: Guam <NA>
## 55: Northern Mariana Islands <NA>
## 56: Virgin Islands <NA>
## state casesPerMillion
state.per.cap.agg[, row := .I]
top.ten <- state.per.cap.agg[row < 11, "state"]
state.per.cap.series <- state.per.cap[state %in% top.ten$state]
state.per.cap.plot <- ggplot(state.per.cap.series[date >= "2020-03-01"], aes(x = date, y = casesPerMillion, colour = state)) +
geom_line(aes(group = state)) +
labs(x = "Date",
y = "Total confirmed COVID cases per million residents",
title = "Total confirmed COVID cases per million residents",
subtitle = paste0("States with 10 highest counts as of ", format(date.cut, "%B %d, %Y"))) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
state.per.cap.plot
Table of new cases per million residents: rolling 3-day total (all 50 states)
state.per.cap <- merge(state.raw, stay_dates, by = "state", all.x = T)
date.cut <- max(state.per.cap$date)
date.min <- max(state.per.cap$date) - 3
state.per.cap.agg <- state.per.cap[date == date.cut]
temp <- state.per.cap[date == date.min]
state.per.cap.agg[, casesPrev3 := temp$cases[match(state.per.cap.agg$state, temp$state)]]
state.per.cap.agg[, newCasesPrev3 := (cases - casesPrev3)]
state.per.cap.agg[, casesNewPerMillion := as.integer(newCasesPrev3/population * 1000000)]
state.per.cap.agg <- state.per.cap.agg[order(-casesNewPerMillion), c("state", "casesNewPerMillion")]
state.per.cap.agg[, casesNewPerMillion := comma(casesNewPerMillion)]
state.per.cap.agg
## state casesNewPerMillion
## 1: New York 1,478
## 2: New Jersey 1,218
## 3: Massachusetts 947
## 4: Rhode Island 885
## 5: Connecticut 631
## 6: District of Columbia 498
## 7: Louisiana 497
## 8: Delaware 427
## 9: Pennsylvania 357
## 10: Illinois 349
## 11: Maryland 337
## 12: South Dakota 319
## 13: Michigan 312
## 14: Indiana 234
## 15: Colorado 191
## 16: Mississippi 175
## 17: Vermont 158
## 18: Alabama 151
## 19: Virginia 144
## 20: Florida 142
## 21: Nevada 131
## 22: New Hampshire 122
## 23: New Mexico 122
## 24: Nebraska 116
## 25: Georgia 114
## 26: Washington 105
## 27: South Carolina 102
## 28: Missouri 101
## 29: Iowa 100
## 30: Tennessee 100
## 31: Utah 100
## 32: Kentucky 98
## 33: Ohio 93
## 34: North Carolina 82
## 35: Texas 82
## 36: California 79
## 37: Wisconsin 78
## 38: Kansas 76
## 39: Oklahoma 72
## 40: Arizona 71
## 41: Minnesota 67
## 42: Puerto Rico 67
## 43: Maine 54
## 44: Wyoming 53
## 45: North Dakota 51
## 46: Alaska 50
## 47: West Virginia 50
## 48: Oregon 48
## 49: Arkansas 44
## 50: Hawaii 40
## 51: Idaho 40
## 52: Montana 30
## 53: American Samoa <NA>
## 54: Guam <NA>
## 55: Northern Mariana Islands <NA>
## 56: Virgin Islands <NA>
## state casesNewPerMillion
Table of total deaths per million residents (all 50 states)
state.per.cap <- merge(state.raw, stay_dates, by = "state", all.x = T)
state.per.cap[, deathsPerMillion := as.integer(deaths/population * 1000000)]
date.cut <- max(state.per.cap$date)
state.per.cap.agg <- state.per.cap[date == date.cut]
state.per.cap.agg <- state.per.cap.agg[order(-deathsPerMillion), c("state", "deathsPerMillion")]
state.per.cap.agg[, deathsPerMillion := comma(deathsPerMillion)]
state.per.cap.agg
## state deathsPerMillion
## 1: New York 482
## 2: New Jersey 264
## 3: Louisiana 180
## 4: Connecticut 155
## 5: Michigan 148
## 6: Massachusetts 109
## 7: District of Columbia 70
## 8: Washington 67
## 9: Rhode Island 59
## 10: Illinois 57
## 11: Colorado 50
## 12: Indiana 50
## 13: Vermont 43
## 14: Georgia 41
## 15: Pennsylvania 41
## 16: Maryland 39
## 17: Nevada 36
## 18: Delaware 35
## 19: Mississippi 32
## 20: Oklahoma 24
## 21: Wisconsin 24
## 22: Florida 21
## 23: Kentucky 21
## 24: Ohio 21
## 25: Kansas 19
## 26: Alabama 18
## 27: Missouri 18
## 28: California 17
## 29: Arizona 16
## 30: New Hampshire 16
## 31: Virginia 16
## 32: Idaho 15
## 33: South Carolina 15
## 34: Tennessee 15
## 35: Maine 14
## 36: Puerto Rico 13
## 37: Iowa 12
## 38: Minnesota 12
## 39: New Mexico 12
## 40: Oregon 12
## 41: North Dakota 10
## 42: Nebraska 9
## 43: Texas 9
## 44: Alaska 8
## 45: Arkansas 8
## 46: North Carolina 8
## 47: Hawaii 6
## 48: South Dakota 6
## 49: Montana 5
## 50: Utah 5
## 51: West Virginia 4
## 52: Wyoming 0
## 53: American Samoa <NA>
## 54: Guam <NA>
## 55: Northern Mariana Islands <NA>
## 56: Virgin Islands <NA>
## state deathsPerMillion
state.per.cap.agg[, row := .I]
top.ten <- state.per.cap.agg[row < 11, "state"]
state.per.cap.series <- state.per.cap[state %in% top.ten$state]
state.per.cap.plot <- ggplot(state.per.cap.series[date >= "2020-03-01"], aes(x = date, y = deathsPerMillion, colour = state)) +
geom_line(aes(group = state)) +
labs(x = "Date",
y = "Total COVID-related deaths per million residents",
title = "Total COVID-related deaths per million residents",
subtitle = paste0("States with 10 highest counts as of ", format(date.cut, "%B %d, %Y"))) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
state.per.cap.plot
Table of new deaths per million residents: rolling 3-day total (all 50 states)
state.per.cap <- merge(state.raw, stay_dates, by = "state", all.x = T)
date.cut <- max(state.per.cap$date)
date.min <- max(state.per.cap$date) - 3
state.per.cap.agg <- state.per.cap[date == date.cut]
temp <- state.per.cap[date == date.min]
state.per.cap.agg[, deathsPrev3 := temp$deaths[match(state.per.cap.agg$state, temp$state)]]
state.per.cap.agg[, newDeathsPrev3 := (deaths - deathsPrev3)]
state.per.cap.agg[, deathsNewPerMillion := as.integer(newDeathsPrev3/population * 1000000)]
state.per.cap.agg <- state.per.cap.agg[order(-deathsNewPerMillion), c("state", "deathsNewPerMillion")]
state.per.cap.agg[, deathsNewPerMillion := comma(deathsNewPerMillion)]
state.per.cap.agg
## state deathsNewPerMillion
## 1: New York 119
## 2: New Jersey 73
## 3: Connecticut 48
## 4: Michigan 41
## 5: Massachusetts 36
## 6: Louisiana 29
## 7: District of Columbia 25
## 8: Rhode Island 18
## 9: Maryland 16
## 10: Illinois 15
## 11: Indiana 14
## 12: Pennsylvania 14
## 13: Delaware 12
## 14: Colorado 10
## 15: Nevada 10
## 16: Washington 7
## 17: Mississippi 6
## 18: Vermont 6
## 19: Florida 4
## 20: Iowa 4
## 21: Kansas 4
## 22: New Mexico 4
## 23: Oklahoma 4
## 24: Wisconsin 4
## 25: Alabama 3
## 26: Arizona 3
## 27: California 3
## 28: Kentucky 3
## 29: Minnesota 3
## 30: Missouri 3
## 31: North Dakota 3
## 32: Ohio 3
## 33: Puerto Rico 3
## 34: Virginia 3
## 35: Georgia 2
## 36: Hawaii 2
## 37: Maine 2
## 38: South Carolina 2
## 39: Texas 2
## 40: Alaska 1
## 41: Arkansas 1
## 42: Idaho 1
## 43: Nebraska 1
## 44: New Hampshire 1
## 45: North Carolina 1
## 46: Oregon 1
## 47: Tennessee 1
## 48: Utah 1
## 49: West Virginia 1
## 50: Montana 0
## 51: Wyoming 0
## 52: South Dakota -1
## 53: American Samoa <NA>
## 54: Guam <NA>
## 55: Northern Mariana Islands <NA>
## 56: Virgin Islands <NA>
## state deathsNewPerMillion
state.per.cap.agg[, row := .I]
top.ten <- state.per.cap.agg[row < 11, "state"]
state.per.cap.series <- state.per.cap[state %in% top.ten$state]
temp <- state.per.cap.series[, c("state", "date", "deaths")]
setnames(temp, "deaths", "deathsPrev3")
state.per.cap.series[, datePrev3 := date - 3]
state.per.cap.series <- merge(state.per.cap.series, temp, all.x = T, by.x = c("state", "datePrev3"), by.y = c("state", "date"))
state.per.cap.series[, newDeathsPrev3 := (deaths - deathsPrev3)]
state.per.cap.series[, deathsNewPerMillion := as.integer(newDeathsPrev3/population * 1000000)]
state.per.cap.plot <- ggplot(state.per.cap.series[date >= "2020-03-10"], aes(x = date, y = deathsNewPerMillion, colour = state)) +
geom_line(aes(group = state)) +
labs(x = "Date",
y = "New COVID-related deaths per million residents",
title = "New COVID-related deaths per million resident (3-day rolling total)",
subtitle = paste0("States with 10 highest counts as of ", format(date.cut, "%B %d, %Y"))) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
state.per.cap.plot
Table showing total cases per million and percentile for all US counties. Includes our counties and the top 5 in the US for perspective.
## county state casesPerMillion rawRanking percentile
## 1: Rockland New York 23,699 1 99
## 2: Westchester New York 19,962 2 99
## 3: Blaine Idaho 19,721 3 99
## 4: Nassau New York 17,358 4 99
## 5: Randolph Georgia 16,377 5 99
## 6: Davidson Tennessee 1,942 144 95
## 7: Richland South Carolina 1,188 318 89
## 8: Pierce Washington 1,035 386 87
## 9: York South Carolina 477 947 69
## 10: Orange California 402 1140 63
Our county percentiles over time
Table showing total deaths per million and percentile for all US counties. Includes our counties and the top 5 in the US for perspective.
## county state deathsPerMillion rawRanking percentile
## 1: Terrell Georgia 1,172 1 99
## 2: Dougherty Georgia 819 2 99
## 3: Nassau New York 759 3 99
## 4: Randolph Georgia 738 4 99
## 5: Greer Oklahoma 700 5 99
## 6: Richland South Carolina 24 571 81
## 7: Pierce Washington 22 602 80
## 8: Davidson Tennessee 19 668 78
## 9: York South Carolina 11 828 73
## 10: Orange California 6 921 70
Our county percentiles over time
agg.cases.US <- state.raw[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.US.plot <- ggplot(agg.cases.US[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = "United States") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.US.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "Washington"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "California"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "Tennessee"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.state.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "Washington"
use.county <- "Pierce"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "California"
use.county <- "Orange"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
use.county <- "Richland"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
use.county <- "York"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "Tennessee"
use.county <- "Davidson"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
agg.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total confirmed COVID cases",
title = "Total confirmed COVID cases",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.cases.county.plot
agg.cases.US <- state.raw[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.US
agg.cases.US[, total_cases_prev := temp$total_cases[match(agg.cases.US$date - 1, temp$date)]]
agg.cases.US[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.US.plot <- ggplot(agg.cases.US[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = "United States") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.US.plot
use.state <- "Washington"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev := temp$total_cases[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.state.plot
use.state <- "California"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev := temp$total_cases[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.state.plot
use.state <- "South Carolina"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev := temp$total_cases[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.state.plot
use.state <- "Tennessee"
cases.state <- state.raw[state %in% use.state]
agg.cases.state <- cases.state[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.state
agg.cases.state[, total_cases_prev := temp$total_cases[match(agg.cases.state$date - 1, temp$date)]]
agg.cases.state[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.state.plot <- ggplot(agg.cases.state[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.state.plot
use.state <- "Washington"
use.county <- "Pierce"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.county
agg.cases.county[, total_cases_prev := temp$total_cases[match(agg.cases.county$date - 1, temp$date)]]
agg.cases.county[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.county.plot
use.state <- "California"
use.county <- "Orange"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.county
agg.cases.county[, total_cases_prev := temp$total_cases[match(agg.cases.county$date - 1, temp$date)]]
agg.cases.county[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.county.plot
use.state <- "South Carolina"
use.county <- "Richland"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.county
agg.cases.county[, total_cases_prev := temp$total_cases[match(agg.cases.county$date - 1, temp$date)]]
agg.cases.county[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.county.plot
use.state <- "Tennessee"
use.county <- "Davidson"
cases.county <- county.raw[state %in% use.state & county %in% use.county]
agg.cases.county <- cases.county[order(date),
.(total_cases = sum(cases, na.rm = T)),
by = "date"]
temp <- agg.cases.county
agg.cases.county[, total_cases_prev := temp$total_cases[match(agg.cases.county$date - 1, temp$date)]]
agg.cases.county[, total_new_cases := total_cases - total_cases_prev]
agg.new.cases.county.plot <- ggplot(agg.cases.county[date >= "2020-03-01"], aes(x = date, y = total_new_cases)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Confirmed new COVID cases",
title = "Confirmed new COVID cases by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.cases.county.plot
agg.deaths.US <- state.raw[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.US.plot <- ggplot(agg.deaths.US[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = "United States") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.deaths.US.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "Washington"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- cases.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "California"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- cases.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- cases.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.state.plot
# adjust state name to flow through rest of code (use capitalized full state name)
use.state <- "Tennessee"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- cases.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.state.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "Washington"
use.county <- "Pierce"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "California"
use.county <- "Orange"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
use.county <- "Richland"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "South Carolina"
use.county <- "York"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
# adjust state and county name to flow through rest of code (use capitalized full state name)
use.state <- "Tennessee"
use.county <- "Davidson"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
agg.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "Total COVID-related deaths",
title = "Total COVID-related deaths",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.deaths.county.plot
agg.deaths.US <- state.raw[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.US
agg.deaths.US[, total_deaths_prev := temp$total_deaths[match(agg.deaths.US$date - 1, temp$date)]]
agg.deaths.US[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.US.plot <- ggplot(agg.deaths.US[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = "United States") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels = comma)
agg.new.deaths.US.plot
use.state <- "Washington"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev := temp$total_deaths[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.state.plot
use.state <- "California"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev := temp$total_deaths[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.state.plot
use.state <- "South Carolina"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev := temp$total_deaths[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.state.plot
use.state <- "Tennessee"
deaths.state <- state.raw[state %in% use.state]
agg.deaths.state <- deaths.state[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.state
agg.deaths.state[, total_deaths_prev := temp$total_deaths[match(agg.deaths.state$date - 1, temp$date)]]
agg.deaths.state[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.state.plot <- ggplot(agg.deaths.state[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = use.state) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.state.plot
use.state <- "Washington"
use.county <- "Pierce"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
use.state <- "California"
use.county <- "Orange"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
use.state <- "South Carolina"
use.county <- "Richland"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
use.state <- "South Carolina"
use.county <- "York"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
use.state <- "Tennessee"
use.county <- "Davidson"
deaths.county <- county.raw[state %in% use.state & county %in% use.county]
agg.deaths.county <- deaths.county[order(date),
.(total_deaths = sum(deaths, na.rm = T)),
by = "date"]
temp <- agg.deaths.county
agg.deaths.county[, total_deaths_prev := temp$total_deaths[match(agg.deaths.county$date - 1, temp$date)]]
agg.deaths.county[, total_new_deaths := total_deaths - total_deaths_prev]
agg.new.deaths.county.plot <- ggplot(agg.deaths.county[date >= "2020-03-01"], aes(x = date, y = total_new_deaths)) +
geom_bar(stat = "identity") +
labs(x = "Date",
y = "New COVID-related deaths",
title = "New COVID-related deaths by day",
subtitle = paste0(use.county, " County, ", use.state)) +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
agg.new.deaths.county.plot
state.dt <- state.raw
state.dt[, stay_date := stay_dates$start_date[match(state.raw$state, stay_dates$state)]]
state.dt[, population := stay_dates$population[match(state.raw$state, stay_dates$state)]]
#state.dt[, flgOrder := ifelse(is.na(stay_date), 0, 1)]
state.dt[, flgOrder := ifelse(is.na(stay_date) | stay_date >= date, "No", "Yes")]
#state.dt[, ctDaysFromBaseline := ifelse(flgOrder == 0, as.integer(date - as.Date("2020-03-10")),
# as.integer(date - stay_date))]
#state.dt[, ctDaysFromBaseline := as.integer(date - stay_date)]
temp <- state.dt
temp <- temp[, c("date", "state", "cases")]
setnames(temp, "cases", "cases_prev3")
state.dt[, dtPrev3 := date - 3]
state.dt <- merge(state.raw, temp, all.x = T, by.x = c("state", "dtPrev3"), by.y = c("state", "date"))
state.dt[, casesNewPerMillion := as.integer((cases - cases_prev3)/population * 1000000)]
state.agg.comp <- state.dt[date >= "2020-03-10" & !state %in% "Puerto Rico"]
state.agg.comp <- state.agg.comp[order(date, flgOrder),
.(avgNewCases = mean(casesNewPerMillion, na.rm = T),
cts = .N),
by = c("date", "flgOrder")]
state.agg.comp.plot <- ggplot(state.agg.comp, aes(x = date, y = avgNewCases, colour = as.factor(flgOrder))) +
geom_point(aes(size = cts)) +
geom_line(aes(group = flgOrder)) +
labs(x = "Date",
y = "New confirmed COVID cases per million residents",
title = "New COVID cases vs.stay-at-home order",
subtitle = "Average of 3-day rolling totals per million residents",
size = "Count of states",
colour = "Stay-at-home order") +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
state.agg.comp.plot